// pages/editAddress/editAddress.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    btnSwitch: false // 保存按钮切换
    , clearBtnSwitch: [true, true, true] // 清空按钮切换
    , name: "" // 收货人
    , phone: "" // 手机号
    , region: [] // 地区
    , regionIsSelected: true // 记录地区是否选择
    , addrDetails: "" // 详细地址
    , tipsIsShow: true // 消息提示显示
    , switchIsChange: true // switch开关是否打开
    , tipsTxt: "保存成功" // 消息提示文本
    , token: "" // token
    , address_id: "" // 地址id
  },

  // 地区选择
  bindRegionChange(e) {
    this.setData({
      region: e.detail.value,
      regionIsSelected: true
    })
    // 保存按钮切换
    this.preserverBtnSwitch()
  },

  // 表单填写
  bindKeyInput(e) {
    switch (e.target.id) {
      case "name":
        this.setData({
          name: e.detail.value
        })
        // 清空按钮切换
        this.clearBtnSwitchEvent(0)
        break
      case "phone":
        this.setData({
          phone: e.detail.value
        })
        // 正则验证
        if (this.data.phone.length === 11) this.verfiPhone()
        // 清空按钮切换
        this.clearBtnSwitchEvent(1)
        break
      case "addr-details":
        this.setData({
          addrDetails: e.detail.value
        })
        // 清空按钮切换
        this.clearBtnSwitchEvent(2)
        break
    }
    // 保存按钮切换
    this.preserverBtnSwitch()
  },

  // 输入框聚焦事件（清空按钮切换）
  focusEvent(e) {
    switch (e.target.id) {
      case "name":
        this.clearBtnSwitchEvent(0)
        break
      case "phone":
        this.clearBtnSwitchEvent(1)
        break
      case "addr-details":
        this.clearBtnSwitchEvent(2)
        break
    }
  },

  // 输入框失焦事件（清空按钮切换）
  blurEvent(e) {
    switch (e.target.id) {
      case "name":
        this.data.clearBtnSwitch[0] = true
        break
      case "phone":
        this.data.clearBtnSwitch[1] = true
        break
      case "addr-details":
        this.data.clearBtnSwitch[2] = true
        break
    }
    this.setData({
      clearBtnSwitch: this.data.clearBtnSwitch
    })
  },

  // 手机号正则验证（不能以10、11、12开头）
  verfiPhone() {
    let reg = /^1[3-9]\d{9}$/
    let phone = this.data.phone
    console.log(reg.test(phone))
    return reg.test(phone)
  },

  // 验证表单是否填写完整
  verifForm() {
    if (this.data.name.length && this.data.phone.length && this.data.addrDetails.length && this.data.regionIsSelected) return true
    else return false
  },

  // 清空按钮切换
  clearBtnSwitchEvent(idx) {
    switch (idx) {
      case 0:
        if (this.data.name.length) {
          this.data.clearBtnSwitch[0] = false
        } else {
          this.data.clearBtnSwitch[0] = true
        }
        break
      case 1:
        if (this.data.phone.length) {
          this.data.clearBtnSwitch[1] = false
        } else {
          this.data.clearBtnSwitch[1] = true
        }
        break
      case 2:
        if (this.data.addrDetails.length) {
          this.data.clearBtnSwitch[2] = false
        } else {
          this.data.clearBtnSwitch[2] = true
        }
        break
    }
    this.setData({
      clearBtnSwitch: this.data.clearBtnSwitch
    })
  },

  // 清空单个输入框内容
  clearInputValue(e) {
    console.log(e.target.id)
    switch (e.target.id) {
      case "name-img":
        this.setData({
          name: ""
        })
        break
      case "phone-img":
        this.setData({
          phone: ""
        })
        break
      case "addr-img":
        this.setData({
          addrDetails: ""
        })
        break
    }
    // 保存按钮切换
    this.preserverBtnSwitch()
  },

  // 保存按钮切换
  preserverBtnSwitch() {
    if (this.verifForm() && this.verfiPhone()) {
      this.setData({
        btnSwitch: false
      })
    } else {
      this.setData({
        btnSwitch: true
      })
    }

  },

  // 获取用户token
  getToken() {
    wx.getStorage({
      key: 'token',
      success: res => {
        console.log("用户token为：", res.data)
        this.data.token = res.data
      },
      fail: err => {
        console.log("token获取失败：", err)
      }
    })
  },

  // 获取需要修改的地址
  getEditAddredd() {
    wx.getStorage({
      key: 'editAddress',
      success: res =>{
        let tempRegion = [res.data.procince, res.data.city, res.data.area]
        this.setData({
          name: res.data.name,
          phone: res.data.phone,
          region: tempRegion,
          addrDetails: res.data.detailed,
          address_id: res.data.address_id,
          switchIsChange: res.data.default ? true : false
        })
        console.log("编辑地址为：", res.data)
      },
      fail: err => {
        console.log("修改地址获取失败", err)
      }
    })
  },

  // 默认地址切换
  switchChange(e) {
    console.log(e.detail.value)
    this.data.switchIsChange = e.detail.value
  },

  // 删除地址
  deleteAddress() {
    wx.request({
      url: 'http://api_devs.wanxikeji.cn/api/userAddressDelete',
      data: {
        token: this.data.token,
        id: this.data.address_id
      },
      success: res => {
        console.log(res.data)
        this.setData({
          tipsTxt: "删除成功",
          tipsIsShow: false
        })
        setTimeout(() => {
          this.setData({
            tipsIsShow: true
          })
          // 页面跳转
          // wx.navigateTo({
          //   url: '../address/address?hasAddress=false',
          // })
          wx.navigateBack();
        }, 300)
      },
      fail: err => {
        console.log("地址删除失败", err)
      }
    })
  },

  // 地址提交
  submitAddr() {
    // 判断改地址是否设置为默认地址
    if (this.data.switchIsChange) {
      wx.request({
        url: 'http://api_devs.wanxikeji.cn/api/userAddressDfault',
        data: {
          token: this.data.token,
          id: this.data.address_id
        },
        success: res => {
          console.log(res.data)
        },
        fail: err => {
          console.log("默认地址设置失败", err)
        }
      })
    }
    wx.request({
      url: 'http://api_devs.wanxikeji.cn/api/userAddressAddModify',
      data: {
        token: this.data.token,
        phone: this.data.phone,
        procince: this.data.region[0],
        city: this.data.region[1],
        area: this.data.region[2],
        name: this.data.name,
        detailed: this.data.addrDetails,
        address_id: this.data.address_id
      },
      success: res => {
        console.log(res.data)
        this.setData({
          tipsTxt: "保存成功",
          tipsIsShow: false
        })
        setTimeout(() => {
          this.setData({
            tipsIsShow: true
          })
          // 页面跳转
          // wx.navigateTo({
          //   url: '../address/address?hasAddress=true',
          // })
          wx.navigateBack();
        }, 300)
      },
      fail: err => {
        console.log("地址删除失败", err)
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取用户token
    this.getToken()
    // 获取需要修改的地址
    this.getEditAddredd()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})